package velocity;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

@Data
public class VelocityModel {

    //模块名称
    private String AsyncFlowModuleName;
    //异步流描述
    private String AsyncFlowDes;
    //异步流管理器名称
    private String AsyncFlowManagerFileName;
    //异步流管理器文件路径
    private String AsyncFlowManagerFilePath;
    //异步流管理器包路径
    private String AsyncFlowManagerPackagePath;

    //异步流责任人名称
    private String AsyncFlowMaintainName;
    //异步流超时报警时间(毫秒)
    private int AsyncFlowTimeOutsLimit;
    //异步流请求参数名称
    private String AsyncFlowRequestFileName;
    //异步流请求参数文件路径
    private String AsyncFlowRequestFilePath;
    //异步流请求参数包路径
    private String AsyncFlowRequestPackagePath;
    //异步流返回参数名称
    private String AsyncFlowResponseFileName;
    //异步流返回参数文件路径
    private String AsyncFlowResponseFilePath;
    //异步流返回参数包路径
    private String AsyncFlowResponsePackagePath;
    //异步流上下文名称
    private String AsyncFlowDataFileName;
    //异步流上下文文件路径
    private String AsyncFlowDataFilePath;
    //异步流上下文包路径
    private String AsyncFlowDataPackagePath;
    //是否需要继承上下文基类
    private boolean hasBaseContext;
    //上下文基类名称
    private String BaseContextFileName;
    //上下文基类文件路径
    private String BaseContextFilePath;
    //上下文基类包路径
    private String BaseContextPackagePath;
    //操作枚举名称
    private String OperatorEnumFileName;
    //操作枚举文件路径
    private String OperatorEnumFilePath;
    //操作枚举包路径
    private String OperatorEnumPackagePath;

    //是否覆盖原来存在Manager
    private boolean replaceManager;

    //是否是原来系统中的Manager
    private boolean NewManager = true;
    //文件创建人
    private String Author;

    //文件创建时间
    private String Date;

    private AsyncFlowNodeInfo asyncFlowNodeInfo;
    private LinkedList<AsyncFlowNodeInfo> asyncFlowNodeInfoList = new LinkedList<>();

    @EqualsAndHashCode(callSuper = true)
    @Data
    public static class AsyncFlowNodeInfo extends VelocityRequest.AsyncFlowNodeInfoRequest {
        //是否是已经生成好了的公共类型操作
        private boolean Public;
        //是否是新的节点
        private boolean NewNode = true;
        //异步流节点文件路径
        private String AsyncFlowNodeFilePath;
        //异步流节点包路径
        private String AsyncFlowNodePackagePath;

    }
}
